package com.lh.lock;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

public class MyInterrupt {

    public static void main(String[] args) throws InterruptedException {

        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 20; i++) {
                System.out.println("t1线程持续执行!!!");

                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    //中断标识标为了false,无法停下，需要再次调用interrupt方法设为true
                    Thread.currentThread().interrupt();
                    e.printStackTrace();
                }
            }
            //Thread.interrupted() 静态方法
            //返回当前线程的中断标识
            //将当前线程的中断状态设为 false
            System.out.println(Thread.interrupted());

        }, "A");

        t1.start();


        //interrupt方法仅仅将线程的标识位设为 true 可以在别的线程中调用，也可以自己调用
        //中断只是一种机制，中断的过程需要自己去实现
        //如果线程处于阻塞状态(sleep wait join等) 在别的线程调用interrupt方法 那么
        //线程将立刻退出阻塞状态 并抛出 InterruptedException 异常 中断状态会被清除
        t1.interrupt();

        TimeUnit.SECONDS.sleep(2);
        //如果此线程已被中断，则为 true；否则为假
        System.out.println(t1.isInterrupted());


    }
}
